<?php
//--------
//--变量--1. 完成 变量 part1.md 练习 1 ~ 3
//--------
//1. 编写局部变量的例子，并打印出相关变量观察

$localV = 10;
function part(){
    $localV = 11;
    var_dump($localV); //局部,输出11,不受外部影响;
}
part();
var_dump($localV);
echo "&nbsp&nbsp&nbsp/"."变量part1第一题"."</br>";

//2. 编写全局变量的例子，并打印出相关变量观察--global关键词

$globalV = 20;
function globalV(){
    global $globalV; //全局变量使用关键词;
    $globalV = 22;
    var_dump($globalV); //全局,输出22,影响全部$globalV
}
globalV();
var_dump($globalV);
echo "&nbsp&nbsp&nbsp/"."part1第二题"."</br>";

//3. 使用静态变量汇总文章的浏览数--static关键词

function staticV(){
    static $staticV = 0; // 不写=0默认Null,可继续+=1成int类型
//    $staticV = 0;
    $staticV += 1;
    var_dump($staticV);
}
staticV();
staticV();
staticV();
echo "&nbsp&nbsp&nbsp/"."part1第三题"."</br>";

//function staticV2(){
//    static $staticV2;   // 不写=0默认Null,可继续+=1成int类型
//    var_dump($staticV2);
//}
//staticV2();

//--------
//--变量--2. 完成 变量 part2.md 练习 1 ~ 2
//--------
//1. 声明全局变量，在函数内打印 $GLOBALS 变量，并观察输出。$GLOBALS(超级全局变量):所有已定义全局变量组成的数组.

$x = 25; $y = 50; $z = 75;
function SGV(){
    $GLOBALS['xyz'] = $GLOBALS['x'] + $GLOBALS['y'] + $GLOBALS['z'];
}
SGV();
echo $xyz;
echo "&nbsp&nbsp&nbsp/"."part2第一题"."</br>";

//2. 在函数内尝试使用 $GLOBALS 对全局变量进行操作，并观察输出。

function SGV2(){
    $GLOBALS['x'] = 22;
}
SGV2();
echo $x; //先行的值xyz未变,虽是全局,但也走顺序(分先后).
echo "&nbsp&nbsp&nbsp/"."part2第二题"."</br>";

//3. 打印 $_SERVER 变量，并观察。



//4. 尝试获取访问用户的IP地址。



//--------
//--常量--3. 完成 常量 part1.md 练习 1 ~ 2
//--------
//1. 声明若干常量，值分别为不同的数据类型，并在页面进行打印。

define("i", 1);
define("s", "str");
define("a", [1,2,3]);
define("b", false); //echo输出:true 1 false 空
echo i;
echo "</br>";
echo s;
echo "<pre>";
var_dump(a);
echo "</pre>";
var_dump(b);
echo "&nbsp&nbsp&nbsp/"."常量part1第一题"."</br>";

//2. 检测上例声明的常量，看是否存在。

if (defined("i")){
    echo "int类型存在"."&nbsp";
}
if (defined("s")){
    echo "str类型存在"."&nbsp";
}
if (defined("a")){
    echo "数组类型存在"."&nbsp";
}
if (defined("b")){
    echo "布尔类型存在"."&nbsp";
}
if (!defined("f")){
    echo "新生成类型:浮点"."&nbsp";
    define("f", 1.23);
}
var_dump(f);
echo "&nbsp&nbsp&nbsp/"."part1第二题"."</br>";

//-----------
//--数据类型--4. 完成 数据类型 part1.md 练习 1 ~ 7
//-----------
//1. 已经一个变量值为："Hello"，检测是否是数组

$s2 = "Hello";
var_dump((array)$s2); // 局部转换?
echo "</br>";
if (is_array($s2)){
    echo "是数组";
}else{
    echo var_dump($s2)."不是数组";
}
echo "&nbsp&nbsp&nbsp/"."数据类型part1第一题"."</br>";

//2. 已经一个变量值为：[]，检测是否是数组

$a2 = [];
if (is_array($a2)){
    echo "是数组";
}else{
    echo var_dump($a2)."不是数组";
}
echo "&nbsp&nbsp&nbsp/"."part1第二题"."</br>";

//3. 已经一个变量值为：100，检测是否是数字

$i2 = 100;
if (is_int($i2)){
    echo "是数字";
}else{
    echo var_dump($i2)."不是数字";
}
echo "&nbsp&nbsp&nbsp/"."part1第三题"."</br>";

//4. 已经一个变量值为："1"，检测是否是数字

$i3 = "1";
if (is_int($i3)){
    echo "是数字";
}else{
    echo var_dump($i3)."不是数字";
}
echo "&nbsp&nbsp&nbsp/"."part1第四题"."</br>";

//5. 已经一个变量值为："01"，检测是否是数字

$i4 = "01";
if (is_int($i4)){
    echo "是数字";
}else{
    echo var_dump($i4)."不是数字";
}
echo "&nbsp&nbsp&nbsp/"."part1第五题"."</br>";

//6. 已经一个变量值为："10f"，检测是否是数字

$i5 = "10f";
if (is_int($i5)){
    echo "是数字";
}else{
    echo var_dump($i5)."不是数字";
}
echo "&nbsp&nbsp&nbsp/"."part1第六题"."</br>";

//7. 已经一个变量值为："0x10a"，检测是否是数字

$i6 = "0x10a";
if (is_int($i6)){
    echo "是数字";
}else{
    echo var_dump($i6)."不是数字";
}
echo "&nbsp&nbsp&nbsp/"."part1第七题"."</br>";
